import { Equip, Menu, Music, TabsMenuProps } from "@/api/interface";

export type LayoutType = "vertical" | "classic" | "transverse" | "columns";

export type AssemblySizeType = "large" | "default" | "small";

export type LanguageType = "zh" | "en" | null;
/**
 * @use 全局仓库
 */
export interface GlobalState {
  layout: LayoutType;
  assemblySize: AssemblySizeType;
  language: LanguageType;
  maximize: boolean;
  primary: string;
  isDark: boolean;
  isGrey: boolean;
  isWeak: boolean;
  asideInverted: boolean;
  headerInverted: boolean;
  isCollapse: boolean;
  accordion: boolean;
  breadcrumb: boolean;
  breadcrumbIcon: boolean;
  tabs: boolean;
  tabsIcon: boolean;
  footer: boolean;
}
/**
 * @use 用户仓库
 * @param token
 * @param userInfo 用户名密码
 */
export interface PermissionInter {
  call: number;
  managedevice: number;
  playmusic: number;
  setvol: number;
  stopcall: number;
  stopplaymusic: number;
  uploadmusic: number;
  uploadtimetask: number;
}
export interface UserState {
  token: string;
  userInfo: {
    issuperadmin: boolean;
    permission: PermissionInter;
    secret: string;
  };
}


/**
 * @use 菜单仓库
 */
export interface MesnuState {
  authMenuList: Menu.MenuOptions[];
}

/**
 * @use 标签Tabs仓库
 */
export interface TabsState {
  tabsMenuList: TabsMenuProps[];
}

/**
 * @use 缓存仓库
 */
export interface KeepAliveState {
  keepAliveName: string[];
}

/**
 * @use 基础信息仓库(设备,音乐...)
 */
export interface baseInfoState {
  equipList: Equip.EquipOptionsRes[];
  musicList: Music.MusicOptionsRes[];
}
